Skip to main content

Ejemplo CNC 16: Función de sondeo (distancia libre restante) (G31)

Vea el CNC16_G31.project proyecto de ejemplo en el directorio de instalación de CODESYS debajo ..\CODESYS SoftMotion\Examples.

El proyecto de ejemplo muestra cómo utilizar la función de sondeo (distancia restante libre).

En el ejemplo, la máquina se mueve en la dirección X hasta que se alcanza una barrera de luz en X=50. Tan pronto como se alcance la barrera de luz, la máquina debe detenerse. El código G restante debe procesarse a partir de esta posición

Estructura de la solicitud

La estructura es típica de las aplicaciones de CNC. El código G se lee en la tarea en segundo planoPathTask). El preprocesamiento de rutas también se realiza en esta tarea. La interpolación se realiza en la tarea del busMainTask).

utiliza el siguiente código G. En bloque N10, se realiza un posicionamiento rápido para X = 20. Luego, con la G31 (función de sondeo: despejar el camino restante), se realiza un movimiento X = 100. Finalmente, en bloque N30, se realiza un movimiento lineal para X = 20, Y = 50.

N10 G0 X20 F100 E1000 E-1000
N20 G31 X100
N30 G1 X20 Y50

La interacción entre el interpolador y el intérprete es particularmente importante para la función de sondeo (borrar la ruta restante).

  1. El intérprete decodifica el código G y genera una línea recta a partir de X=20 para X=100 para bloquear N20. Luego deja de decodificar.

  2. El interpolador realiza el movimiento lineal y emite simultáneamente el número de sonda como salida udiActProbe. Para el G31, el número de muestra es siempre 1

  3. En la aplicación, el interpolador se detiene con bQuick_Stop tan pronto como la unidad se desplace más allá de su posición X=50. (Esto simula la barrera de luz).

    _sm_img_example_cnc16_1.png
  4. En la tarea del autobús, el SMC_SetInterpreterStartPosition el bloque de funciones se usa para copiar continuamente la posición actual de la máquina.

    _sm_img_example_cnc16_2.png
  5. En el PathTask, la posición inicial se asigna a la entrada SMC_NCInterpreter.piStartPosition:

    inter(
        sentences:= read.sentences,
        bExecute:= read.bExecute,
        nSizeOutQueue:= SIZEOF(bufIpo),
        pbyBufferOutQueue:= ADR(bufIpo),
        piStartPosition:= Main.setStart.StartPos);
  6. Tan pronto como se detenga el interpolador, bAcknProbe entrada se usa para confirmar el comando G31. En una aplicación real, también se debe comprobar en este punto que los ejes han alcanzado realmente la posición de parada. SMC_InPosition el bloque de funciones se puede usar para hacer esto.

    _sm_img_example_cnc16_4.png
  7. Esto hace que el intérprete reanude la decodificación, pero con la posición de inicio actualizada, de modo que el siguiente bloque N30 se inicia desde la posición X=55.5.

En el siguiente diagrama se muestran estos pasos. Los números entre paréntesis se refieren a los pasos correspondientes del proceso descrito anteriormente.

_sm_img_example_cnc16_5.png

Puesta en servicio

  1. Cree la aplicación y descárguela en un controlador.

  2. Abra la traza y descárguela al controlador.

  3. Inicie la aplicación y abra la visualización.